Automated Cloud Set Up

ABSTRACT

Automated cloud set up may include collecting compute resources available for setting up a cloud, identifying packages available to apply to the compute resources, and determining which subsets of the packages to apply to which compute resource.

CROSS-REFERENCE TO RELATED APPLICATION

This is a continuation of U.S. application Ser. No. 14/058,939, filedOct. 21, 2013, which is hereby incorporated by reference.

BACKGROUND

A cloud is a group of computing devices connected through a real-timecommunication network, such as the internet, that are organized toperform network based services. The cloud may employ the use of physicalcomputing devices or virtual devices. The resources of the computingdevices are shared to maximize efficiencies. The cloud can operate torun programs remotely on client devices, store an enormous amount ofdata, perform complex tasks, and other functions.

A cloud can be set up manually. In such a case, the user can take all ofthe raw packages, such as operating systems, program instructions, ordownloaded information, from a repository, like OpenStack. Then the usercan build and install the packages as desired. Next, the user caninstall and configure the packages on the correct computing device andthen prepare those computing devices for operation in the cloud.

BRIEF DESCRIPTION OF THE DRAWINGS

The accompanying drawings illustrate various examples of the principlesdescribed herein and are a part of the specification. The illustratedexamples are merely examples and do not limit the scope of the claims.

FIG. 1 is a diagram of an example of a set up system according to theprinciples described herein.

FIG. 2 a is a diagram of an example of a process for automated cloud setup according to the principles described herein.

FIG. 2 b is a diagram of an example of a process for automated cloud setup according to the principles described herein.

FIG. 3 is a diagram of an example of a process for developing a regionof a cloud according to the principles described herein.

FIG. 4 is a diagram of an example of a method for automated cloud set upaccording to the principles described herein.

FIG. 5 is a diagram of an example of a set up system according to theprinciples described herein.

FIG. 6 is a diagram of an example of a set up system according to theprinciples described herein.

DETAILED DESCRIPTION

Some programs have been developed to assist with the creation of acloud. Such programs include Chef, Crowbar, and JuJu. All of theseapproaches try to simplify setting up a cloud, but each still relies onthe user or a community of users to create a specification for eachservice to be performed by the cloud. In Crowbar, the specification iscalled a barclamp, and in JuJu, the specification is called a charm.These are complicated elements that take time to create. Once created,the specifications still have to be applied to each cloud device andmanually instantiated, configured, and deployed one at a time.

The process of defining and standing up a cloud is labor intensive,error prone, and time consuming. The process involves many tasks. First,the cloud administrator has to specify which compute resources (nodes)will be included in the cloud. The next task is to decide which nodeswill be used as “controllers” and which nodes will be purposed forcompute, storage, or other functions. Once the nodes have been assignedroles, a series of packages have to be installed on the correct nodes.For example, nodes assigned a controller role will have a different setof packages than a node assigned a compute or storage role. For eachpackage, a series of attributes have to be specified. Once theattributes have been selected for each package, the packages have to beapplied in the correct order.

Creating a cloud is a very complicated process. If you were to take rawpackages from OpenStack and then provision them into a cloud, it wouldtake many days and a lot of assistance to prepare everything correctly.Each service has its own mechanism for configuring itself and thedetails of this configuration can be low level and involve intimateknowledge of the system and the service.

The principles described herein simplify the entire process of cloudsetup. In the simplest case, the process of automating a cloud can becompleted with fewer than ten mouse clicks. The principles describedherein involve examining the available compute resources (nodes) and thepackages available and then automatically applying the correct packagesto the right nodes. Attribute specification is also greatly simplifiedin that default values are used where possible and just those attributesthat make sense to be overridden can be.

The principles described herein include a method for automated cloud setup. Such a method may include collecting compute resources available forsetting up a cloud, identifying packages available to apply to thecompute resources, and determining which subsets of the packages toapply to which compute resource. The compute resources may be nodes orother components used to run the operations of the cloud. The packagesmay include operating systems, program instructions, or otherdownloadable information to operate the compute resources.

In the following description, for purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of the present systems and methods. It will be apparent,however, to one skilled in the art that the present apparatus, systems,and methods may be practiced without these specific details. Referencein the specification to “an example” or similar language means that aparticular feature, structure, or characteristic described is includedin at least that one example, but not necessarily in other examples.

FIG. 1 is a diagram of an example of a set up system (100) according tothe principles described herein. In this example, the set up system(100) discovers nodes (102, 104, 106) that can be used in a cloud (108).The cloud (108) is a group of computing resources, such as the nodes(102, 104, 106) that are organized together to carry out at least onefunction. Each of the nodes (102, 104, 106) can be assigned specificroles within the cloud (108) to carry out the cloud's tasks.

The set up system (100) can initiate an automated cloud set up procedurethat involves a minimal amount of user input. For example, the set upsystem (100) can discover the nodes (102, 104, 106) that are availableto be part of the cloud. The set up system (100) can automaticallypre-initialize these nodes (102, 104, 106) so that they are visible tothe rest of the system. In some examples, the set up system (100) canrecognize that a discovered node has parameters that are incompatiblewith the cloud (108). In such a situation, the set up system (100) willnot pre-initialize the node.

In response to pre-initializing a node, the set up system (100) can seekuser input to determine whether the user wants to include the node inthe cloud. The set up system (100) can seek user input through anyappropriate mechanism. In some examples, the set up system (100) uses acommunication mechanism that will involve minimal interaction from theuser. For example, the communication mechanism may involve displaying amessage on a screen of a user interface that identifies the node inquestion and asks if the user wants to include that node in the cloud(108). The message may be accompanied with a first button that indicatesthat the user wants to include the node and a second button thatindicates that the user does not want to include the node.

If the user wants to include the node in the cloud, the set up systemwill complete the initialization procedure so that the node can beassigned roles within the cloud (108). In such a condition, the node canhave general purpose machine readable instructions that are specific tothe cloud (108). Thus, the node is capable of operating within the cloud(108), but at this point does not have an assignment.

In response to having a node without a role, the set up system (100) canrequest input from the user for which type of role to assign the node.Again, such a communication may include any appropriate communicationmechanism. In some examples, the set up system (100) determines whichroles are suitable for the node based on the node's attributes andrecommends just those roles that are compatible for such a node. Indetermining which roles to assign to a node, the set up system (100) candetermine which roles are underperforming in the cloud (108), whichroles can take advantages of the characteristics of the node, otherfactors, or combinations thereof. In the example of FIG. 1, the set upsystem (100) includes a roles table (110), which contains the types ofroles that are available for nodes or other computing devices in thecloud (108). Such a roles table (110) can include attributes that arecompatible with computing resources, such as memory attributes,processing speed attributes, other types of attributes, or combinationsthereof. The set up system (100) can determine based on the informationin the roles table (110) which roles are appropriate to assign to thenode. In the example of FIG. 1, the roles in the role table include anetwork controller role (112), a cloud controller role (114), a storagecontroller role (116), and another type of role (117). While thisexample has been described with reference to specific types of roles,any appropriate type of role may be used in accordance with theprinciples described herein.

In response to determining which type of role is appropriate for thenode, the set up system can seek user input to determine which role toassign to the node. In response to receiving input from the user, theset up system (100) can determine which package to install on the nodebased on its role. The set up system (110) may include a group ofpackages (118), each package being a subset of the packages that areavailable for each node. The packages (118) may include operatingsystems, program instructions, other machine readable instructions,other types of information, or combinations thereof that the node canuse to properly operate within its function. In response to determiningwhich role to assign the node, the set up system can automaticallyinstall the appropriate package onto the node. In this manner, the useris spared from making a manual determination of which packages areavailable for a node of a specific role and also spared from manuallyinitializing the installation for each portion of the package thatshould be downloaded to a node of that particular role.

Further, the set up system (100) can seek user input for which region toassign the role. The cloud (108) may include multiple regions thatcluster specific nodes to perform operations together. Such regions maybe based on geographic regions, logical regions, task oriented regions,regions based on other criteria, or combinations thereof. In exampleswhere the cloud (108) is first being established, the cloud (108) maynot have any regions yet established. In such examples, the set upsystem may request input from the user for establishing a region. Then,as nodes are assigned roles, the set up system (100) can seek input fromthe user for which region to assign the nodes.

In the example of FIG. 1, the set up system (100) has a regions table(120), which tracks the regions in the cloud (108). Such a regions table(120) may include an identifier for each of the regions, an identifierfor each of the nodes assigned to the region, types of computingresources desired for each region, other types of information, orcombinations thereof.

The principles described herein can eliminate multiple set up tasks forthe user to perform and thereby eliminate potential manual errors that auser often encounters in cloud creation. The first task in cloudcreation is node collection. Here, nodes are discovered and allocatedfor general purposes. Along the cloud creation process, each node can beclassified into one of the following categories: initial state, readyfor allocation, allocated, and deployed. A node can be booted into theset up system (100) in a preboot execution environment (PXE) that isindependent of the node's installed operating system. Before a node isPXE-booted, the node is classified in the initial state and is notvisible to the set up system (100). Once the system has recognized andpre-initialized the node, the node is classified in the ready forallocation category. Here, the user can decide to complete the setup ofthis node. If the user desires to complete the node's set up, a completeand custom operating system is installed onto the node, and the node isclassified in the allocated category. When a node is classified asallocated, the node is ready to be used in the cloud (108). Nodes thatare being used in a cloud are classified in the deployed category.

Once a set of nodes are allocated, a cloud can be created. The userprovides a specification at this point by choosing what role a nodeshould play. Depending upon the user's cloud parameters, a single nodeor set of nodes can fulfill multiple roles. For example, a single nodecan act as a cloud controller, a network controller, and a networkcontroller. However any combinations of nodes may be employed to fulfillmultiple roles or a single role. Once the nodes have been specified, aminimal set of attributes can be modified. In some examples, the node'sattributes can be left alone if the node's default attributes aresufficient.

The user then builds the cloud and the set up system (100) goes throughthe process of preparing the packages and installing them to theappropriate nodes. In response to the creation of a cloud, the user canspecify and create compute regions, storage regions, other types ofregions, or combinations thereof that are to be associated with thecloud. In some examples, the process for region creation is identical tocloud creation.

Such processes can be implemented as an abstraction on top of anyexisting technology, including Chef, Crowbar, JuJu, or other programs.Chef is an automation platform that is available through Opscode, Inc.,which has operations in Seattle, Wash., U.S.A. Crowbar is an automationplatform that is available through Dell, Inc, which headquartered inRound Rock, Tex., U.S.A. JuJu is an orchestration tool that is availablethrough Canonical Ltd., which has operations in London, United Kingdom.

In some examples that build off of Crowbar, the barclamp writer canspecify two things: that the Crowbar specifications (barclamps) areincluded in the suite of packages and which node types apply to thebarclamp role. The node types can be: cloud controller, networkcontroller, storage controller, compute controller, compute node,storage node, another role, or combinations thereof. With thisinformation, the set up system (100) can determine which packages andconfigurations should be installed on which nodes. Thus, the automationcan proceed with no further user input.

The principles described herein provide a very simple mechanism to setup a cloud from the user's side. Further, such a mechanism is very fastcompared to other commercially available programs that assist the userin creating clouds. The principles herein allow a user to get anoperational cloud in about fifteen minutes from the time that the userhas obtained a set of allocated nodes. The principles herein alsoprovide a robust cloud creation mechanism. A vast majority of errorsthat are often in cloud creation are eliminated. Further, the set upsystem (100) allows multiple independent clouds to be created easily aswell as to set up multiple compute and/or storage regions associatedwith the individual clouds.

FIG. 2 a is a diagram of an example of a process (200) for automatedcloud set up according to the principles described herein. In thisexample, the process (200) includes discovering (202) a node andpre-initializing (204) the node. The process (200) also includesdetermining (206) whether the user wants to complete the node's set up.If the user does not want to complete the set up, the process ends(208). On the other hand, if the user wants to complete the node's setup, the process (200) includes allocating (210) the node.

FIG. 2 b is a diagram of an example of a process (250) for automatedcloud set up according to the principles described herein. In thisexample, the process (250) includes discovering (252) a package andcreating (254) a template for the package. The process (250) alsoincludes determining (256) configurations should be made to thetemplate. If so, specific parameters are applied (258) to the template.The process (250) continues by identifying (260) nodes associated withthis package per node role and installing (262) the package on the node.

FIG. 3 is a diagram of an example of a process (300) for developing aregion of a cloud according to the principles described herein. In thisexample, the user has an ability to create a cloud and/or a region.Likewise, the user has an ability to remove a region of the cloud orremove the cloud itself. In some examples, the user can extend andreduce the regions simultaneously. Likewise, the user can extend and/orreduce the regions multiple times.

The process (300) includes creating (302) a cloud. Here, the cloud is aframework in which nodes and regions can be added such that the nodescan operate together based on their roles to accomplish predeterminedtasks, such as remote network services. Further, the process (300)includes creating (304) a compute region. The region can be extended(306) by assigning a node to the compute region. Likewise, the computeregion can be reduced (308) by unassigning a node to the compute region.While this example has been described with specific reference tocreating, modifying, and removing compute regions, any appropriate typeof region may be created, modified, or removed. For example, the regionsmay be storage regions, other types of regions, or combinations thereof.

Further, the user can instruct the set up system to remove (310) thecompute region. Likewise, the user can instruct the set up system toremove the cloud.

FIG. 4 is a diagram of an example of a method (400) for automated cloudset up according to the principles described herein. In this example,the method (400) includes collecting (402) compute resources availablefor setting up a cloud, identifying (404) packages available to apply tothe compute resources, and determining (406) which subsets of thepackages to apply to which compute resources.

The user will be able to create and organize a cloud in a userinterface. The user interface may present user friendly buttons, freetext fields, and other mechanism that allow the user to interact withthe set up system. The information requests for the user may be limitedto just specific questions that cannot be determined by the set upsystem alone. The principles described herein may reduce the time andcomplexity, from the user's side, for setting up of the cloud.

In some examples, a node will be set up with PXE-boot in response to acompute resource being introduced into the set up system. The set upsystem may include a server which such PXE booting capabilities. Inresponse to the new compute resource being powered on, the node willsearch for a PXE server and this server will give the node the correctoperating system image to install. At this time, an administrative nodetakes notice of the new node and tracks the new node continually. Oncethe node has received a base operating system from the set up system,the new node is classified as in a not allocated category. In thisclassification, the node is unable to be used in the cloud, so the userwill allocate the node by clicking an allocate node button. In exampleswhere the crowbar program is used with the set up system, during thisprocess, crowbar will install a different operating system on the nodeand then will apply a series of barclamps to prepare the node for usageas an element of a cloud.

In some examples, the user can change multiple parameters about the nodeat any time desired by the user. For example, the user may be able tochange the node's alias or its description. The alias may replace aserial number or other type of identifier in the user interface. Theuser may want to make the alias a user friendly name so that the usercan easily identify the node based on the alias. The alias may be a wordthat can be used as a system hostname. The description may be changed ina free form description field with a limited number of characters.

In some examples, to create a cloud, the user can click a create cloudbutton on the manage cloud's page. This action raises a create clouddialog where the user can specify the name of the cloud, which can alsobe a domain name that is used to initialize other programs. This dialogalso lets the user specify the nodes that will be used in the cloudcontroller role, network controller role, storage controller role, orother role.

An additional information button can be used to fill in properties aboutthe cloud to be created. The user may input information in response toselecting this button that guide the set up system in creating thecloud.

In response to a user selecting a create cloud button, the set up systemwill go through a series of tasks to create an active cloudautomatically. However, in some examples, no compute regions, storageregions, or other types of regions are established automatically at thisstage. The compute region, storage regions, or other types of regionscan be added to a cloud at any time based on user input after the cloudhas been created. A create compute region dialog can be displayed in theuser interface in response to a request from a user to create thecompute region. Within this dialog, the user can specify the name of thecompute region and additional information about the region. Also,another additional information tab can be used to fill in properties bythe user for building the compute region.

If at least one compute region already exists when a new node is broughtinto the set up system, the new node can be assigned to one of thoseregions through the use of extend compute region buttons or othermechanisms. In some examples, to add nodes to a compute region, the usermay specify which compute region will be extended and then will selectthe compute nodes to be added to the selected compute region. In someexamples, a node that is already assigned to first region may be removedfrom its currently assigned region to be reassigned to another region.However, in some examples, if a compute node is assigned a role as acontroller, that node cannot be removed from the region withoutcompletely removing the region.

If the user wants to completely remove a compute region, the user mayaccomplish this using with a remove compute region button or similarmechanism. In such an example, the user may select which compute regionto remove and then type the remove command in an appropriate validationfield.

Likewise, if the user wants to completely remove a cloud, the user mayselect a remove cloud button or activate the cloud removal throughanother type of mechanism. Here, the set up system may request that theuser input a remove command in an appropriate validation field to ensurethat the cloud is not unintentionally removed.

In some examples, the user may view more detail about a cloud byclicking the cloud's name in the user interface or through another typeof mechanism. In response to such a selection, details about the cloud,the cloud's resources, the cloud's regions, the cloud's identifier, thecloud's alias, other information about the cloud, or combinationsthereof may appear in a screen of the user interface. Likewise, a usermay be able to click a node's name or a region's name to view detailsfor that node or region.

FIG. 5 is a diagram of an example of a set up system (500) according tothe principles described herein. The set up system (500) includes acollection engine (502), an identifying engine (504), a determiningengine (506), and an applying engine (508). In this example, the set upsystem (500) also includes an initialization engine (510), an optionsengine (512), a role engine (514), a region engine (516), a creatingengine (517), an extending engine (518), a reducing engine (520), and aremoving engine (522). The engines (502, 504, 506, 508, 510, 512, 514,516, 517, 518, 520, 522) refer to a combination of hardware and programinstructions to perform a designated function. Each of the engines (502,504, 506, 508, 510, 512, 514, 516, 517, 518, 520, 522) may include aprocessor and memory. The program instructions are stored in the memoryand cause the processor to execute the designated function of theengine.

The collecting engine (502) collects the nodes that are to be includedin the cloud. The process of collecting may include node discovery. Theinitialization engine (510) pre-initializes the discovered node. Theidentifying engine (504) identifies packages available to apply to thenodes, and the determining engine (506) determines which subsets of thepackages to apply to which of the nodes. The applying engine (508)applies the selected subsets of the packages to the appropriate nodes.

The options engine (512) provides options to the user through a userinterface to guide the user in providing input about how to build thecloud. For example, the options engine (512) may provide options tocomplete the set up of a node, which role to apply to which node,whether to create a region, whether to extend a region, whether toreduce a region, whether to remove a region, other options, orcombinations thereof.

The role engine (514) assigns a role to the node based on user input.The region engine (516) assigns a region to a node based on user input.The creating engine (517) creates a region based on user input. Theextending engine (518) extends a region by adding new nodes to theregion based on user input. The reducing engine (520) removes nodes froma region based on user input. The removing engine (522) removes a regionbased on user input.

FIG. 6 is a diagram of an example of a set up system (600) according tothe principles described herein. In this example, the set up system(600) includes processing resources (602) that are in communication withmemory resources (604). Processing resources (602) include at least oneprocessor and other resources used to process programmed instructions.The memory resources (604) represent generally any memory capable ofstoring data such as programmed instructions or data structures used bythe set up system (600). The programmed instructions shown stored in thememory resources (604) include a compute resource discoverer (606), anode pre-initializer (608), a set up completion option provider (610), aset up completer (612), a role options provider (613), a role assigner(616), a package installer (620), a region option provider (621), aregion creator (622), a region extender (626), and a region reducer(628). The data structures shown stored in the memory resources (604)include a role table (614), a package repository (618), and a regiontable (624).

The memory resources (604) include a computer readable storage mediumthat contains computer readable program code to cause tasks to beexecuted by the processing resources (602). The computer readablestorage medium may be tangible and/or non-transitory storage medium. Thecomputer readable storage medium may be any appropriate storage mediumthat is not a transmission storage medium. A non-exhaustive list ofcomputer readable storage medium types includes non-volatile memory,volatile memory, random access memory, memristor based memory, writeonly memory, flash memory, electrically erasable program read onlymemory, magnetic storage media, other types of memory, or combinationsthereof.

The compute resource discoverer (606) represents programmed instructionsthat, when executed, cause the processing resources (602) to discovercompute resources available for creating or modifying a cloud. The nodepre-initializer (608) represents programmed instructions that, whenexecuted, cause the processing resources (602) to pre-initializediscovered nodes. The set up completion option provider (610) representsprogrammed instructions that, when executed, cause the processingresources (602) to provide an option to complete the set up of a node.The set up completer (612) represents programmed instructions that, whenexecuted, cause the processing resources (602) to complete the node'sset up based on user input.

The role option provider (613) represents programmed instructions that,when executed, cause the processing resources (602) to provide an optionfor which role to assign to a node. The role option provider (613) mayprovide an option for just those roles that would be compatible with anode. In some examples, the role option provider (613) provides arecommendation for which role to assign a node based on the performanceof the cloud. The role options provider (613) may consult with the roletable (614) when presenting the role options to the user. The roleassigner (616) represents programmed instructions that, when executed,cause the processing resources (602) to assign roles to nodes based onuser input. The package installer (620) represents programmedinstructions that, when executed, cause the processing resources (602)to install the appropriate packages from the package repository (618)based on the role assigned to the node.

The region option provider (621) represents programmed instructionsthat, when executed, cause the processing resources (602) to provide anoption for where to assign the node. The option may include an option tocreate a region, extend a region, reduce a region, or combinationsthereof. The region table (624) tracks which nodes are assigned to whichregions. The region creator (622) represents programmed instructionsthat, when executed, cause the processing resources (602) to create aregion based on user input. The region extender (626) representsprogrammed instructions that, when executed, cause the processingresources (602) to extend a region by adding a node to the region basedon user input. The region reducer (628) represents programmedinstructions that, when executed, cause the processing resources (602)to reduce a region by removing a node from the region based on userinput.

Further, the memory resources (604) may be part of an installationpackage. In response to installing the installation package, theprogrammed instructions of the memory resources (604) may be downloadedfrom the installation package's source, such as a portable medium, aserver, a remote network location, another location, or combinationsthereof. Portable memory media that are compatible with the principlesdescribed herein include DVDs, CDs, flash memory, portable disks,magnetic disks, optical disks, other forms of portable memory, orcombinations thereof. In other examples, the program instructions arealready installed. Here, the memory resources can include integratedmemory such as a hard drive, a solid state hard drive, or the like.

In some examples, the processing resources (602) and the memoryresources (604) are located within the same physical component, such asa server, or a network component. The memory resources (604) may be partof the physical component's main memory, caches, registers, non-volatilememory, or elsewhere in the physical component's memory hierarchy.Alternatively, the memory resources (604) may be in communication withthe processing resources (602) over a network. Further, the datastructures, such as the libraries and may be accessed from a remotelocation over a network connection while the programmed instructions arelocated locally. Thus, the set up system (600) may be implemented on auser device, on a server, on a collection of servers, or combinationsthereof.

The set up system (600) of FIG. 6 may be part of a general purposecomputer. However, in alternative examples, the set up system (600) ispart of an application specific integrated circuit.

The preceding description has been presented only to illustrate anddescribe examples of the principles described. This description is notintended to be exhaustive or to limit these principles to any preciseform disclosed. Many modifications and variations are possible in lightof the above teaching.

What is claimed is:
 1. A computer program product for automated setup ofa cloud, comprising: a non-transitory computer readable storage mediumthat comprises instructions that, when executed, causes at least oneprocessor to: discover compute resources available for setting up thecloud; identify a plurality of roles that are compatible for a givencompute resource of the compute resources based on attributes of thegiven compute resource; select a role from the plurality of roles forassignment to the given compute resource; identify packages available toapply to the given compute resource; and determine a subset of thepackages to apply to the given compute resource based on the selectedrole.
 2. The computer program product of claim 1, wherein the pluralityof roles comprise a controller role, a compute role, and a storage role,and the selected role is one of the controller role, the compute role,and the storage role.
 3. The computer program product of claim 1,wherein each of the packages comprises an operating system and programinstructions.
 4. The computer program product of claim 1, wherein theinstructions when executed cause the at least one processor to:initialize each respective compute resource of the discovered computeresources using preboot execution environment (PXE) booting of therespective compute resource, wherein the initializing transitions therespective compute resource from an initial state to a state in which apackage is installable on the respective compute resource.
 5. Thecomputer program product of claim 1, wherein the instructions whenexecuted cause the at least one processor to automatically apply apackage from the determined subset of packages to the given computeresource.
 6. The computer program product of claim 1, wherein theinstructions when executed cause the at least one processor to: make thegiven compute resource visible to a setup system that comprises the atleast one processor; and install a base operating system on the givencompute resource.
 7. The computer program product of claim 1, whereinthe role is selected from among a cloud controller role, a networkcontroller role, a storage controller role, or combinations thereof. 8.The computer program product of claim 1, wherein the instructions whenexecuted cause the at least one processor to assign the given computeresource to a region within the cloud, wherein compute resources withinthe region perform operations together, and the assignment to the regionis based on the selected role of the given compute resource.
 9. Thecomputer program product of claim 1, wherein the attributes of the givencompute resource comprise at least one of memory attributes andprocessing speed attributes.
 10. A method comprising: discovering, by asystem comprising a processor, compute resources available for settingup a cloud; identifying, by the system, a plurality of roles that arecompatible for a given compute resource of the compute resources basedon attributes of the given compute resource; selecting, by the system, arole from the plurality of roles for assignment to the given computeresource; identifying, by the system, packages available to apply to thegiven compute resource; and determining, by the system, a subset of thepackages to apply to the given compute resource based on the selectedrole.
 11. The method of claim 10, wherein the plurality of rolescomprise a cloud controller role, a network controller role, and astorage controller role, and the selected role is one of the cloudcontroller role, the network controller role, and the storage controllerrole.
 12. The method of claim 10, wherein each of the packages comprisesan operating system and program instructions.
 13. The method of claim10, further comprising: initializing each respective compute resource ofthe discovered compute resources using preboot execution environment(PXE) booting of the respective compute resource, wherein theinitializing transitions the respective compute resource from an initialstate to a state in which a package is installable on the respectivecompute resource.
 14. The method of claim 10, further comprisingassigning the given compute to an operating region based on the selectedrole, wherein the given compute resource performs operations togetherwith other compute resources in the operating region.
 15. The method ofclaim 10, wherein the plurality of roles that are compatible with thegiven compute resources is further based on a performance of the cloud.16. A system, comprising: at least one processor to: discover nodesavailable for setting up the cloud; identify a plurality of roles thatare compatible for a given node of the nodes based on attributes of thegiven node; select a role from the plurality of roles for assignment tothe given node; identify packages available to apply to the given node;and determine a subset of the packages to apply to the given node basedon the selected role.
 17. The system of claim 16, wherein the pluralityof roles comprise a cloud controller role, a network controller role,and a storage controller role, and the selected role is one of the cloudcontroller role, the network controller role, and the storage controllerrole.
 18. The system of claim 16, wherein each of the packages comprisesan operating system and program instructions.
 19. The system of claim16, wherein the at least one processor is to: initialize each respectivenode of the discovered nodes using preboot execution environment (PXE)booting of the respective node, wherein the initializing transitions therespective node from an initial state to a state in which a package isinstallable on the respective node.